using System;
using System.Collections.Generic;
using System.Text;
using System.Xml;
using MindFactorial.LaunchPoint.Common;


namespace MindFactorial.LaunchPoint.Runtime
{
    /// <summary>
    /// The IRunnable interface should be implemented by any class that
    /// needs to be run by LaunchPoint Runtime.
    /// </summary>
    public interface ILaunchPointApplication : IObject
    {   
        /// <summary>
        /// gets the information about whether LaunchPoint Runnable component
        /// is  Shutdown or not
        /// </summary>
        bool IsShutdown { get;}

        /// <summary>
        /// launches the plugin or an application
        /// </summary>
        /// <param name="configNode">Configuration Info</param>
        /// <param name="args">Arguments</param>
        /// <returns></returns>
     
        int Run(Xml configNode, params string[] args);

        /// <summary>
        /// This will Shutdown LaunchPoint Runnable component
        /// </summary>
        void Shutdown();       
    }
}
